home *** CD-ROM | disk | FTP | other *** search
/ Garbo / Garbo.cdr / mac / cdev / sludge.sit / Source Code / Parasite_Manager.c < prev    next >
Text File  |  1999-10-07  |  7KB  |  141 lines

  1. /*ÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑ
  2.   Ñ                                                                           Ñ
  3.   Ñ   File Name:    Parasite_Manager.c                                          Ñ
  4.   Ñ   ----------                                                              Ñ
  5.   Ñ                                                                           Ñ
  6.   Ñ   Copyright ⌐ 1990 Apple Computer, Inc.  All Rights Reserved              Ñ
  7.   Ñ                                                                           Ñ
  8.   Ñ       Description                                                         Ñ
  9.   Ñ       -----------                                                         Ñ
  10.   Ñ       This file contains the routines of the parasite manager.              Ñ
  11.   Ñ          The parasite manager will install and remove the SLUDGE parasite.   Ñ
  12.   Ñ          The SLUDGE parasite is what slows down the machine.                  Ñ
  13.   Ñ                                                                           Ñ
  14.   Ñ       History                                                             Ñ
  15.   Ñ       -------                                                             Ñ
  16.   Ñ                                                                           Ñ
  17.   Ñ       Author          Date            Description                         Ñ
  18.   Ñ       ------------------------------------------------------------------  Ñ
  19.   Ñ       Kevin McEntee   2/20/90         Original Implementation             Ñ
  20.   Ñ                                                                           Ñ
  21.   Ñ                                                                           Ñ
  22.   ÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑ*/
  23. #include    <OSUtils.h>
  24. #include    <Resources.h>
  25. #include    <Memory.h>
  26.  
  27. #include    "Parasite_Manager.h"
  28. #include    "State_Storage_Manager.h"
  29.  
  30.  
  31. void TRY(Ptr Parasite_Location, long Sludge_Factor);
  32.  
  33. /*ÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑ
  34.   Ñ                                                                           Ñ
  35.   Ñ   Identifier:      Install                                                  Ñ
  36.   Ñ   -----------                                                             Ñ
  37.   Ñ                                                                           Ñ
  38.   Ñ       Description                                                         Ñ
  39.   Ñ       -----------                                                         Ñ
  40.   Ñ       This function installs the SLUDGE parasite and makes it active.      Ñ
  41.   Ñ                                                                           Ñ
  42.   Ñ       History                                                             Ñ
  43.   Ñ       -------                                                             Ñ
  44.   Ñ                                                                           Ñ
  45.   Ñ       Author          Date            Description                         Ñ
  46.   Ñ       ------------------------------------------------------------------  Ñ
  47.   Ñ       Kevin McEntee   2/20/90         Original Implementation             Ñ
  48.   Ñ                                                                           Ñ
  49.   Ñ                                                                           Ñ
  50.   ÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑ*/
  51. void Install(Handle cdevStorage, long Sludge_Factor)
  52. {
  53.     Handle  SLUDGE_parasite;
  54.     short    rvalue;
  55.     Handle  a_trap_vector_address = 0x28;
  56.     Handle  jt_vector_address = 0x24;
  57.  
  58.  
  59.                                          /*ÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑ
  60.                                            Ñ                                        Ñ
  61.                                            Ñ    Save the values of the Jump_Trace     Ñ
  62.                                            Ñ    a-trap exception vectors.            Ñ
  63.                                            Ñ                                        Ñ
  64.                                            ÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑ*/
  65.     Set_Original_A_TRAP_Exception_Vector_Value(cdevStorage, *a_trap_vector_address);
  66.     Set_Original_JUMP_TRACE_Exception_Vector_Value(cdevStorage, *jt_vector_address);
  67.     
  68.                                          /*ÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑ
  69.                                            Ñ                                        Ñ
  70.                                            Ñ    Load the parasite resource.            Ñ
  71.                                            Ñ                                        Ñ
  72.                                            ÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑ*/
  73.     
  74.     
  75.     SLUDGE_parasite = GetResource('NUGG',0);
  76.     
  77.     rvalue = ResError();
  78.     
  79.     if (rvalue != 0)
  80.         DebugStr("\pGetResource Failed");
  81.     
  82.     DetachResource(SLUDGE_parasite);
  83.     rvalue = ResError();
  84.     
  85.     if (rvalue != 0)
  86.         DebugStr("\pDetachResource Failed");
  87.         
  88.     
  89.     HLock(SLUDGE_parasite);
  90.     
  91.     Set_Location_Of_Parasite_Resource(cdevStorage, SLUDGE_parasite);
  92.     
  93.                                          /*ÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑ
  94.                                            Ñ                                        Ñ
  95.                                            Ñ    Activate the parasite.                Ñ
  96.                                            Ñ                                        Ñ
  97.                                            ÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑ*/
  98.     TRY(*SLUDGE_parasite, Sludge_Factor);
  99.     
  100. }
  101.  
  102.  
  103. #include    <OSUtils.h>
  104. void CLEAR_JUMP_TRACE_BIT();
  105.  
  106.  
  107. /*ÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑ
  108.   Ñ                                                                           Ñ
  109.   Ñ   Identifier:     remove                                                      Ñ
  110.   Ñ   -----------                                                             Ñ
  111.   Ñ                                                                           Ñ
  112.   Ñ       Description                                                         Ñ
  113.   Ñ       -----------                                                         Ñ
  114.   Ñ       This function makes the SLUDGE parasite inactive and removes it.      Ñ
  115.   Ñ                                                                           Ñ
  116.   Ñ       History                                                             Ñ
  117.   Ñ       -------                                                             Ñ
  118.   Ñ                                                                           Ñ
  119.   Ñ       Author          Date            Description                         Ñ
  120.   Ñ       ------------------------------------------------------------------  Ñ
  121.   Ñ       Kevin McEntee   2/20/90         Original Implementation             Ñ
  122.   Ñ                                                                           Ñ
  123.   Ñ                                                                           Ñ
  124.   ÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑ*/
  125. void remove(Handle cdevStorage)
  126. {
  127.     Handle  SLUDGE_parasite;
  128.     Handle  a_trap_vector_address = 0x28;
  129.     Handle  jt_vector_address = 0x24;
  130.     
  131.     CLEAR_JUMP_TRACE_BIT();
  132.     
  133.     
  134.     *a_trap_vector_address = Get_Original_A_TRAP_Exception_Vector_Value(cdevStorage);
  135.     *jt_vector_address = Get_Original_JUMP_TRACE_Exception_Vector_Value(cdevStorage);
  136.     
  137.     SLUDGE_parasite = Get_Location_Of_Parasite_Resource(cdevStorage);
  138.     HUnlock(SLUDGE_parasite);
  139.     DisposHandle(SLUDGE_parasite);
  140.     
  141. }